home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / 1764SQUARES.ARC / 1764 SQUARES (.txt)
Encoding:
Commodore BASIC  |  2019-04-13  |  3.9 KB  |  99 lines

  1. 10 REM "1764SQUARES" (REALLY RECTANGLES)
  2. 20 REM A SIMPLE BASIC PROGRAM TO GENERATE 16 HIGH-RESOLUTION SCREENS AND SAVE
  3. 30 REM THEM TO THE 1764 RAM EXPANSION.
  4. 40 REM AFTER ALL 16 SCREENS HAVE BEEN SAVED THEY ARE CYCLED THROUGH ENDLESSLY.
  5. 50 REM %%%WRITTEN WITH CRIBBING FROM THE PROGRAMMER'S REFERENCE GUIDE, 1764
  6. 60 REM MANUAL AND THE "GLOBE" DEMO PROGRAM
  7. 110 GOSUB 1000
  8. 200 GOSUB 2000
  9. 300 GOTO 5000
  10. 400 STOP
  11. 1000 REM INITIALIZE BIT-MAP MODE & REC CONTROLLER POSITION
  12. 1010 :   BASE=2*4096:BSIZE=8000:REM SET BASE AND SIZE OF BIT MAP
  13. 1020 :   CLOUR=1024:CSIZE=1024:REM SET BASE AND SIZE OF COLOR MAP
  14. 1025 :   CSIZE=1024:REM SET BASE AND SIZE OF COLOR MAP
  15. 1050 :   R=13*4096+15*256:REM REC CONTROLLER
  16. 1060 :   DIM LC(16),HC(16),BC(16),LB(16),HB(16),BB(16):REM SET DIMENSIONS
  17. 1070 RETURN
  18. 2000 REM GENERATE SQUARES
  19. 2010 :   FOR I=1 TO 16 STEP 1:REM SIXTEEN SQUARES
  20. 2015 :      GOSUB 6000
  21. 2020 :     FOR J=BASE TO BASE+BSIZE-1 STEP 1:POKE J,0:NEXT J:REM CLEAR BIT MAP
  22. 2030 :      FOR J=CLOUR TO CLOUR+CSIZE-1 STEP 1
  23. 2040 :         IF(I=1)THEN POKE J,16
  24. 2050 :         IF(I<>1)THEN POKE J,I-1
  25. 2060 :      NEXT J:REM CHANGE COLORS FOR EACH SQUARE
  26. 2070 :      Y1=99-(200*5*I)/360:Y2=99+(200*5*I)/360
  27. 2080 :      FOR X=159-5*I TO 159+5*I STEP 1
  28. 2090 :         CH=INT(X/8)
  29. 2100 :            RO=INT(Y1/8)
  30. 2110 :         LN=Y1 AND 7
  31. 2120 :         BI=7-(X AND 7)
  32. 2130 :         GOSUB 3000
  33. 2140 :         RO=INT(Y2/8)
  34. 2150 :         LN=Y2 AND 7
  35. 2160 :         GOSUB 3000
  36. 2170 :      NEXT X
  37. 2180 :      X1=159-5*I:X2=159+5*I
  38. 2190 :      FOR Y=99-(200*5*I)/360 TO 99+(200*5*I)/360 STEP 1
  39. 2200 :         CH=INT(X1/8)
  40. 2210 :         RO=INT(Y/8)
  41. 2220 :         LN=Y AND 7
  42. 2230 :         BI=7-(X1 AND 7)
  43. 2240 :         GOSUB 3000
  44. 2250 :         CH=INT(X2/8)
  45. 2260 :         BI=7-(X2 AND 7)
  46. 2270 :         GOSUB 3000
  47. 2280 :      NEXT YH(null):      K=I:GOSUB 4000
  48. 2300 :   NEXT I
  49. 2320 RETURN
  50. 3000 REM TURN BITS ON
  51. 3010 :   BY=BASE+320*RO+8*CH+LN
  52. 3020 :   POKE BY,PEEK(BY) OR (2^BI)
  53. 3030 RETURN
  54. 4000 REM SAVE DATA TO RAM EXPANSION
  55. 4020 :   Z=(K-1)*CSIZE
  56. 4030 :   B=INT(Z/65536):H=INT((Z-65536*B)/256):L=Z-65536*B-256*H
  57. 4040 :   LC(K)=L:HC(K)=H:BC(K)=B:REM SAVE COLOR MAPS IN FIRST BANK OF RAM
  58. 4050 :   POKE R+2,0:POKE R+3,4:REM C64 COLOR MAP
  59. 4060 :   POKE R+4,LC(K):POKE R+5,HC(K):POKE R+6,BC(I):REM EXPANSION ADDR&BANK
  60. 4070 :   POKE R+7,0:POKE R+8,4:REM NUMBER OF BYTES TRANSFERRED
  61. 4080 :   POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INCREMENT REGISTERS
  62. 4090 :   POKE R+1,176:REM SAVE TO EXPANSION
  63. 4100 :   Z=65536+(K-1)*BSIZE
  64. 4110 :   B=INT(Z/65536):H=INT((Z-65536*B)/256):L=Z-65536*B-256*H
  65. 4120 :   LB(I)=L:HB(I)=H:BB(I)=B:REM SAVE BIT M BI\N HIGHER BANKS OF RAM
  66. 4130 :   POKE R+2,0:POKE R+3,32:REM C64 BMM LOCATION
  67. 4140 :   POKE R+4,LB(I):POKE R+5,HB(I):POKE R+6,BB(I):REM EXPANSION ADDR&BANK
  68. 4150 :   POKE R+7,BSIZE AND 255:POKE R+8,BSIZE/256:REM NUMBER OF BYTES TRANSFER
  69. 4160 :   POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INCREMENT REGISTERS
  70. 4170 :   POKE R+1,176:REM SAVE TO EXPANSION
  71. 4200 :   POKE 53265, PEEK(53265) AND 223
  72. 4210 :   POKE 53272, PEEK(53272) AND 247
  73. 4220 :   PRINT CHR$(147)+"COLOR: BANK",BC(K)," POINT",HC(K),LC(K)
  74. 4230 :   PRINT "BMM: BANK",BB(K),"POINT",HB(K),LC(K)
  75. 4280 :   PRINT "SCREEN ",K," SAVED"
  76. 4290 :   FOR J=1 TO 1000 STEP 1:NEXT J:REM SHORT DELAYHS$RETURN
  77. 5000 REM GET DATA FROM RAM EXPANSION TO SCREEN
  78. 5005 :   GOSUB 6000
  79. 5030 :   FOR J=0 TO 1 STEP 0
  80. 5040 :      FOR I=1 TO 16 STEP 1
  81. 5050 :         POKE R+2,0:POKE R+3,4: REM CPU ADDRESS FOR COLOR MAP
  82. 5060 :         POKE R+4,LC(I):POKE R+5,HC(I):POKE R+6,BC(I):REM EXPANSION ADD&BK
  83. 5070 :         POKE R+7,0:POKE R+8,4:REM NUMBER OF BYTES TRANSFERRED
  84. 5080 :         POKE R+9,0:POKE R+10,0:REM RESET INTERRUPTS AND INAND 2T REG.'S
  85. 5090 :         POKE R+1,177: REM TRANSFER TO COLOR MAP
  86. 5100 :         POKE R+2,0:POKE R+3,32:REM C64 BMM LOCATION
  87. 5110 :         POKE R+4,LB(I):POKE R+5,HB(I):POKE R+6,BB(I):REM EXPAN ADDR&BANK
  88. 5120 :         POKE R+7,BSIZE AND 255:POKE R+8,BSIZE/256:REM NUMBER OF BYTES TR
  89. 5130 :         POKE R+9,0:POKE R+10,0: REM RESET INTERRUPTS AND INAND 2NT REG.'S
  90. 5140 :         POKE R+1,177:REM TRANSFER TO BMM
  91. 5150 :         FOR K=1 TO 1000 STEP 1:REM SHORT DELAYH[(:      NEXT I
  92. 5170 :   NEXT J
  93. 5900 STOP
  94. 6000 REM CLEAR SCREEN AND SET HIGH RESOLUTION
  95. 6010 :   PRINT CHR$(147)
  96. 6020 :   POKE 53272,PEEK(53272) OR 8:REM BIT-MAP LOCATION
  97. 6030 :   POKE 53265,PEEK(53265) OR 32:REM ENTER BIT MAP
  98. 6040 RETURN
  99.